package acm.pta13;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;


/**
 * todo：好题
 * 题目理解：有点意思
 * 一张有环单向图
 * 从1号点出发，给你在当前点一些操作
 * 问每次存档操作所在的节点是哪一个
 */
public class 哲哲打游戏 {
    // 档案记录
    static final int[] record = new int[101];
    // 使用邻接表法存储图
    static final int[][] map = new int[100001][];

    public static void main(String[] args) throws IOException {
        // 创建 io.Reader 对象读取输入
        Reader sc = new Reader();
        // 读取节点数量和操作数量
        int n = sc.nextInt();
        int m = sc.nextInt();
        // 读取每个节点的出边
        for (int i = 1; i <= n; i++) {
            int k = sc.nextInt();
            map[i] = new int[k + 1];
            for (int j = 1; j < map[i].length; j++) {
                map[i][j] = sc.nextInt();
            }
        }
        // 当前位置
        int cur = 1;
        // 执行操作
        while (m-- > 0) {
            // 读取操作类型和操作参数
            int type = sc.nextInt();
            int op = sc.nextInt();
            switch (type) {
                case 0:
                    // 移动到指定位置
                    cur = map[cur][op];
                    break;
                case 1:
                    // 存档并打印当前位置
                    record[op] = cur;
                    System.out.println(cur);
                    break;
                case 2:
                    // 读档
                    cur = record[op];
                    break;
            }
        }
        // 打印最后的位置
        System.out.println(cur);
    }

    // io.Reader 类，用于读取输入
    static class Reader {
        // 使用 StreamTokenizer 读取输入
        static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        // 读取一个整数
        static int nextInt() throws IOException {
            in.nextToken();
            return (int) in.nval;
        }
    }

}
